package com.module.codeBind.manager;

import java.sql.Connection;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.Transaction;

import base.common.CUDEnum;
import base.dao.GenericHibernateDao;
import base.db.HibernateSessionFactory;
import base.manager.GenericHibernateManager;
import base.util.ConstantUnit;
import base.util.Page;
import base.util.StringUtil;

import com.module.codeBind.dao.CodeAppDao;
import com.module.codeBind.vo.CodeApp;





public class CodeAppManager extends GenericHibernateManager<CodeApp,String> implements ConstantUnit{
    CodeAppDao dao = CodeAppDao.getInstance();
    private static CodeAppManager service ;
    
    private static Logger logger = Logger.getLogger(CodeAppManager.class);
    CodeAppManager(){
    }
    public static CodeAppManager getInstance(){
        if(service== null){
            service = new CodeAppManager();
        }
        return service;
    }
    /**
     * 保存或者修改
     * @param item
     * @return
     * @throws Exception 
     */
//    public void saveOrUpdate(CodeBindBeanUtil bean) throws Exception{
//    	CodeApp item = bean.getCodeapp();
//    	String id = item.getId();
//    	if(!StringUtil.isNull(item.getId())){//添加
//    		item.setStatus(CUDEnum.C.toString());
//    		item.setCreateTime(new Date());
//        }else{
//        	item.setStatus(CUDEnum.U.toString());
//            item.setUpdateTime(new Date());
//        }
//        boolean isTrue = saveOrUpdate(item);
//        Map map = RequestManager.addOptReturnMessage(bean, id, isTrue);
//		bean.setResult(map);
//    }
//    /**
//     * 删除对象
//     * @param item
//     * @return
//     * @throws Exception 
//     */
//    public void delete(CodeBindBeanUtil bean) throws Exception
//    {
//    	CodeApp item=bean.getCodeapp();
//    	Session session =HibernateSessionFactory.getSession();
//    	Transaction tx =session.beginTransaction();
//    	boolean flag = false;
//		try{
//	    		flag = dao.delete(session,item);
//	    		tx.commit();
//	    		Map statusMap = RequestManager.deleteOptReturnMessage(bean, flag);
//	    		bean.setResult(statusMap);
//	    	}catch(Exception e){
//	    		if(tx!=null){
//	    			tx.rollback();
//	    		}
//	    		throw e;
//	    	}finally{
//	    		this.closeSession();
//	    	}
//    }
//    
//    /**
//     * 分页查询码应用
//     * @param item 码应用对象
//     * @param firstRow 开始行
//     * @param maxRow 每页最大行数
//     * @return Page对象
//     * @throws Exception 
//     */
//    public Page toList(CodeBindBeanUtil bean) throws Exception{
//    	Session session =HibernateSessionFactory.getSession();
//    	Page page = null;
//		try{
//	    		page =dao.toList(session,bean.getCodeapp(),bean.getPage().getStart(),bean.getPage().getLimit());
//	    	}catch(Exception e){
//	    		throw e;
//	    	}finally{
//	    		this.closeSession();
//	    	}
//        return page;
//    }
    
    /**
     * 不分页查询所有码应用
     * @return 所有码应用结果集
     * @throws Exception 
     */
    public List<CodeApp> readAll() throws Exception
    {
    	Session session =HibernateSessionFactory.getSession();
    	 List<CodeApp> list =null;
    	try{
    		list = dao.readAll(session);
    	}catch(Exception e){
    		throw e;
    	}finally{
    		this.closeSession();
    	}
        return list;
    }
    
    /**
     * 查询码绑定的码应用
     * @param bindId
     * @return
     * @throws Exception 
     */
    public List<CodeApp> getBindCodeApp(String bindId) throws Exception{
    	Session session =HibernateSessionFactory.getSession();
    	List<CodeApp> list= null;
		try{
	    		list = dao.getBindCodeApp(session,bindId);
	    	}catch(Exception e){
	    		throw e;
	    	}finally{
	    		this.closeSession();
	    	}
    	return list;
    }
    
    /**
     * 验证码应用编号是否已经存在
     * @param appCode 码应用编号
     * @return 返回true或者false
     * @throws Exception 
     */
//    public void checkAppCode(CodeBindBeanUtil bean) throws Exception{
//    	
//    	String appCode = bean.getCodeapp().getAppCode();
//    	boolean isTrue = true;
//    	Session session =HibernateSessionFactory.getSession();
//    	try{
//        	long count = dao.getAppBycode(session,appCode);
//        	if(count>0){
//        		isTrue = false;
//        	}
//    		RequestManager.checkOptReturnMessage(bean, isTrue);
//    	}catch(Exception e){
//    		throw e;
//    	}finally{
//    		this.closeSession();
//    	}
//    }
    /**
     * 根据Id查询对象
     * @param id
     * @return 
     * @throws Exception 
     */
//    public CodeApp get(String id){
//        return dao.get(id);
//    }
    public List getCodeAppByOrgAppIdList(List list) throws Exception{
    	Session session =HibernateSessionFactory.getSession();
		try{
		        list = (dao.getCodeAppByOrgAppIdList(session,list));

	    	}catch(Exception e){
	    		throw e;
	    	}finally{
	    		this.closeSession();
	    	}

		return list;
    }
//    /**
//     * 根据批次项获取应用列表
//     * @throws Exception 
//     */
//    public List<CodeApp> getCodeAppListByBatchCodeItem(CodeBindBeanUtil util) throws Exception{
//    	Session session =HibernateSessionFactory.getSession();
//    	Connection conn = session.connection();
//    	List<CodeApp> list = null;
//		try{
//			 list =  dao.getCodeAppListByBatchCodeItem(conn,util.getBatchCodeItem());
//	    	}catch(Exception e){
//	    		throw e;
//	    	}finally{
//	    		this.close(conn);
//	    		this.closeSession();
//	    	}
//	    	return list;
//    }
	@Override
	public GenericHibernateDao<CodeApp, String> getDao() {
		// TODO Auto-generated method stub
		return dao;
	}
    
}
